package com.settlement.system.model.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.settlement.system.common.base.BaseEntity;
import com.settlement.system.common.enums.OwnerLossEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 核销登记表
 * </p>
 *
 * @author huangrensen
 * @since 2023-08-30
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SysAuditCheckIn extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 责任部门核实人
     */
    private Long checkUserId;

    /**
     * 损失原因
     */
    private String lossReason;

    /**
     * 损失原因细则名称
     */
    private String lossDetailName;

    /**
     * 责任方
     */
    private String roleCode;

    /**
     * 订单核销单据状态名称
     */
    private String orderStatusName;

    /**
     * 责任方跟进结果
     */
    private String followResult;

    /**
     * 是否自认损失
     */
    private Integer ownerLoss = OwnerLossEnum.NO.getValue();

    /**
     * 自认损失金额（等于应收账款余额）
     */
    private BigDecimal ownerLossMoney = BigDecimal.ZERO;

    /**
     * 责任方负责人审核备注
     */
    private String managerRemark;

    /**
     * 质检时间
     */
    private LocalDateTime qualityDate;

    /**
     * 质检订单号
     */
    private String qualityNo;

    /**
     * 质检数量
     */
    private Integer qualityCount = 0;

    /**
     * 打款时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime payoutsDate;

    /**
     * 收款交易号
     */
    private String payoutsNo;

    /**
     * 追回款项余额
     */
    private BigDecimal recoverMoney = BigDecimal.ZERO;

    /**
     * 盘盈单号
     */
    private String pyNo;

    /**
     * 关联个人已办或归档核销表
     */
    private String doneId;

    /**
     * 单据编号
     */
    private String orderNo;

    // 核销记录类型 CheckInTypeEnum 默认为正常流转
    private Integer checkInType = 0;

    // 财务调账金额
    private BigDecimal reconciliationAmount = BigDecimal.ZERO;

    /**
     * 创建人ID
     */
    private Long createBy;

    /**
     * 修改人ID
     */
    private Long updateBy;
}
